package com.cj.user.service.zingfront;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author cheng jun
 * @Description:
 */
public class PenQuestions3 {

    /**
     * 某俱乐部有4只⾜球队A，B，C，D队，现有1~20的级别划分每个队伍，既⽬前每
     * 队的战⽃⼒⽔平级别在10，7，5，4的⽔平。现俱乐部为了优化各队的能⼒⽔平，实
     * 施每⽉底从战⽃⼒最⾼的队伍抽出部分⼈⼒资源，均分配到其他⼩队。（规则：分配3
     * 个战⽃⼒的⼈⼒资源出来到其他⼩队，所以经过⼀个⽉的调整分配，各⼩队现在的战
     * ⽃⼒⽔平：7、8、6、5）
     * 那么请问，经过五年的战⽃⼒优化调整后，哪个⼩队的战⽃⼒最⾼，为多少？
     * 编程求解该问题，并思考是否为最优解。
     */

    /**
     * 四个数求最大值
     * @param A
     * @param B
     * @param C
     * @param D
     * @return
     */
    public static int findTheBestValue(int A, int B, int C, int D) {
        int t1 = 0;
        int t2 = 0;
        int max = 0;
        if (A > B) {
            t1 = A;
        } else {
            t1 = B;
        }
        if (C > D) {
            t2 = C;
        } else {
            t2 = D;
        }
        if (t1 > t2) {
            max = t1;
        } else {
            max = t2;
        }
        return max;
    }

    public static Map<String, Object> calculateCombatPower(int A, int B, int C, int D) {
        //最高战力
        int powerMax = 0;
        for (int i = 0; i < 60; i++) {
            int max = findTheBestValue(A, B, C, D);

            if (A == max) {
                //a最大
                A -= 3;
                B += 1;
                C += 1;
                D += 1;
            } else if (B == max) {
                //b最大
                B -= 3;
                A += 1;
                C += 1;
                D += 1;
            } else if (C == max) {
                //c最大
                C -= 3;
                A += 1;
                B += 1;
                D += 1;
            } else {
                //d最大
                D -= 3;
                A += 1;
                B += 1;
                C += 1;
            }
        }
        powerMax = findTheBestValue(A, B, C, D);
        Map<String, Object> map = new HashMap<>(16);
        if (A == powerMax) {
            map.put("A", powerMax);
        } else if (B == powerMax) {
            map.put("B", powerMax);
        } else if (C == powerMax) {
            map.put("C", powerMax);
        } else {
            map.put("D", powerMax);
        }
        return map;
    }

    public static void main(String[] args) {
        Map<String, Object> map = calculateCombatPower(10, 7, 5, 4);
        for (String key : map.keySet()) {
            System.out.println(key + "⼩队的战⽃⼒最⾼," + "为" + map.get(key));
        }
    }
}

